using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace FiltronASP.Models.DAO.Interfaces
{
    /// <summary>
    /// Interfejs dla operacji bazodanowych specyficznych dla tabeli <code>users</code>.
    /// </summary>
    public interface IUserDAO : IGenericDAO<User, System.Nullable<int>>
    {
        /// <summary>
        /// Pobieranie obiektu na podstawie loginu użytkownika.
        /// </summary>
        /// <param name="userLogin">login użytkownika</param>
        /// <returns>Lista rekordów o zadanym loginie użytkownika</returns>
        User FindByUserLogin(String userLogin);

        /// <summary>
        /// Pobieranie listy aktywnych/nieaktywnych użytkowników.
        /// </summary>
        /// <param name="userActive">aktywny</param>
        /// <returns>lista rekordow aktywnych/nieaktywnych użytkowników</returns>
        IQueryable<User> FindActiveUsers(bool userActive);


        /// <summary>
        /// Pobieranie listy obiektów na podstawie nazwy i którzy nie będą zadanym użytkownikiem.
        /// </summary>
        /// <param name="userName">nazwa</param>
        /// <param name="userId">użytkownik</param>
        /// <returns>lista rekordow o zadanej nazwie użytkownika i nie będące zadanym użytkownikiem</returns>
        IQueryable<User> FindByUserNameAndNotUserId(string userName, int userId);

        /// <summary>
        /// Pobieranie najwyższego id użytkownika.
        /// </summary>
        /// <returns>Najwyższy id użytkownika</returns>
        int SelectMaxUserId();

    }
}

